import cv2 #导入opencv库
import numpy
#直方图均衡化，对比度改变
def equalization_rgb(imgtu):
    #只能使用灰度图片
    imgx=cv2.cvtColor(imgtu,cv2.COLOR_RGB2GRAY)#转换为灰度

    #默认参数，自接使用
    #imgtu=cv2.equalizeHist(imgx)#均衡化

    #可修改参数clipLimit的值得到不一样效果
    chanlx=cv2.createCLAHE(clipLimit=30.0,tileGridSize=(8,8))
    imgtu=chanlx.apply(imgx)

    cv2.imshow("equalization",imgtu)#显示


#直方图比较，图片相似度比较，遍历像素点，速度慢慢
def create_compara(imgtu):
    h,w,t=imgtu.shape
    rgbx=numpy.zeros([16*16*16,1],numpy.float32)
    bsize=256/16
    for row in range(h):
        for col in range(w):
            b=imgtu[row,col,0]
            g=imgtu[row,col,1]
            r=imgtu[row,col,2]
            index=numpy.int(b/bsize)*16*16+numpy.int(g/bsize)*16+numpy.int(r/bsize)
            rgbx[numpy.int(index),0]=rgbx[numpy.int(index),0]+1
    return rgbx

def compare_ing():
    img1=cv2.imread("imgx/xxG.png")
    img2=cv2.imread("imgx/xxR.png")
    hist1=create_compara(img1)
    hist2=create_compara(img2)
    cv2.imshow("img1111",img1)
    cv2.imshow("img2222",img2)
    va1=cv2.compareHist(hist1,hist2,cv2.HISTCMP_BHATTACHARYYA)
    va2=cv2.compareHist(hist1,hist2,cv2.HISTCMP_CORREL)
    va3=cv2.compareHist(hist1,hist2,cv2.HISTCMP_CHISQR)
    print("巴氏距离，越小越相似（0,1）：",va1)
    print("相关性，越接近于1，越相似：",va2)
    print("卡方，越小越相似：",va3)


#读取一张图片，地址不能带中文
imgviewx=cv2.imread("imgx/zcy.jpg")

#创建一个窗口，中文显示会出乱码
cv2.namedWindow("东小东标题")

#显示图片，参数：（窗口标识字符串，imread读入的图像）
cv2.imshow("东小东标题",imgviewx)

#------------------
#equalization_rgb(imgviewx)#直方图均衡化，提高对比度
compare_ing()#直方图比较，图片相似度

#-------------------

#窗口等待任意键盘按键输入,0为一直等待,其他数字为毫秒数
cv2.waitKey(0)

#销毁窗口，退出程序
cv2.destroyAllWindows()